package cn.zqy.demo1.day01XML.Jsoup;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;


import java.io.File;
/**
     3. 解析：操作xml文档，将文档中的数据读取到内存中
 *          操作xml文档
            1. 解析(读取)：将文档中的数据读取到内存中
            2. 写入：将内存中的数据保存到xml文档中。持久化的存储
 *        解析xml的方式：
        1. DOM：将标记语言文档一次性加载进内存，在内存中形成一颗dom树
 *          优点：操作方便，可以对文档进行CRUD的所有操作
 *          缺点：占内存
        2. SAX：逐行读取，基于事件驱动的。
 *          优点：不占内存。
 *          缺点：只能读取，不能增删改
 *
 *  * 快速入门：
 * 				* 步骤：
 * 					1. 导入jar包
 * 					2. 获取Document对象
 * 					3. 获取对应的标签Element对象
 * 					4. 获取数据
 * */
public class Demo01Jsoup {
    public static void main(String[] args) throws Exception{
        //2.获取Document对象，根据xml文档获取
        //2.1获取student.xml的path
        String path = Demo01Jsoup.class.getClassLoader().
                getResource("").getPath();
        System.out.println(path);
        path = "src/cn/zqy/demo1/day01XML/Jsoup/student.xml"; // src/cn/zqy/demo1/day01XML/Jsoup/student.xml
        // path = "src\\cn\\zqy\\demo1\\day01XML\\Jsoup\\student.xml"; // src\cn\zqy\demo1\day01XML\Jsoup\student.xml
        System.out.println(path);
        // 【注意】：路径正斜杠和反斜杠都对？

        //2.2解析xml文档，加载文档进内存，获取dom树--->Document
        Document document = Jsoup.parse(new File(path), "utf-8");
        //3.获取元素对象 Element
        Elements elements = document.getElementsByTag("name");
        // 获取name节点个数
        System.out.println(elements.size()); // 2
        //3.1获取第一个name的Element对象
        Element element = elements.get(0);
        System.out.println(element);

    }
}
